import request from '@/utils/request'


export function getActivityList(params) {
    return request({
        url: '/api/activity/list',
        method: 'get',
        params
    })
}

/**
 * 获取活动详情
 * @param {Number} id 活动ID
 * @param {Number} userId 用户ID（可选）
 * @returns {Promise} 请求Promise对象
 */
export function getActivityDetail(id, userId) {
    return request({
        url: `/api/activity/${id}`,
        method: 'get',
        params: { userId }
    })
}

/**
 * 创建活动
 * @param {Object} data 活动数据
 * @returns {Promise} 请求Promise对象
 */
export function createActivity(data) {
    return request({
        url: '/api/activity',
        method: 'post',
        data
    })
}

/**
 * 更新活动
 * @param {Number} id 活动ID
 * @param {Object} data 活动数据
 * @returns {Promise} 请求Promise对象
 */
export function updateActivity(id, data) {
    return request({
        url: `/api/activity/${id}`,
        method: 'put',
        data
    })
}

/**
 * 删除活动
 * @param {Number} id 活动ID
 * @returns {Promise} 请求Promise对象
 */
export function deleteActivity(id) {
    return request({
        url: `/api/activity/${id}`,
        method: 'delete'
    })
}

/**
 * 推荐/取消推荐活动
 * @param {Number} id 活动ID
 * @param {Boolean} isRecommended 是否推荐
 * @returns {Promise} 请求Promise对象
 */
export function recommendActivity(id, isRecommended) {
    return request({
        url: `/api/activity/${id}/recommend`,
        method: 'put',
        params: { isRecommended }
    })
}

/**
 * 更新活动状态
 * @param {Number} id 活动ID
 * @param {Number} status 状态码
 * @returns {Promise} 请求Promise对象
 */
export function updateActivityStatus(id, status) {
    return request({
        url: `/api/activity/${id}/status`,
        method: 'put',
        params: { status }
    })
}

/**
 * 获取用户创建的活动
 * @param {Number} userId 用户ID
 * @param {Number} page 页码（默认0）
 * @param {Number} size 每页大小（默认10）
 * @returns {Promise} 请求Promise对象
 */
export function getCreatedActivities(userId, page = 0, size = 10) {
    return request({
        url: '/api/activity/created',
        method: 'get',
        params: { userId, page, size }
    })
}

/**
 * 获取热门活动
 * @param {Number} limit 数量限制
 * @returns {Promise} 请求Promise对象
 */
export function getHotActivities(limit = 5) {
    return request({
        url: '/api/activity/hot',
        method: 'get',
        params: { limit }
    })
}

/**
 * 获取用户参与的活动
 * @param {Number} userId 用户ID
 * @param {Number} page 页码（默认0）
 * @param {Number} size 每页大小（默认10）
 * @returns {Promise} 请求Promise对象
 */
export function getJoinedActivities(userId, page = 0, size = 10) {
    return request({
        url: '/api/activity/joined',
        method: 'get',
        params: { userId, page, size }
    })
}

/**
 * 获取活动总数
 * @returns {Promise} 请求Promise对象
 */
export function getActivityCount() {
    return request({
        url: '/api/activity/count',
        method: 'get'
    })
}

/**
 * 分页查询活动列表
 * @param {Object} params 查询参数
 * @returns {Promise}
 */
export function pageActivities(current, size, params) {
    return request({
        url: '/api/activity/page',
        method: 'get',
        params: {
            current,
            size,
            ...params
        }
    })
}

/**
 * 设置活动状态
 * @param {Number} id 活动ID
 * @param {Number} status 状态值
 * @returns {Promise}
 */
export function setActivityStatus(id, status) {
    return request({
        url: '/activity/status', method: 'put', data: {
            id, status
        }
    })
}

/**
 * 获取最新活动
 * @param {Number} limit 限制数量
 * @returns {Promise}
 */
export function getLatestActivities(limit) {
    return request({
        url: '/activity/latest', method: 'get', params: {limit}
    })
}

/**
 * 获取活动统计数据
 * @returns {Promise}
 */
export function getActivityStats() {
    return request({
        url: '/activity/stats', method: 'get'
    })
}

/**
 * 报名活动
 * @param {number} activityId - 活动ID
 * @returns {Promise} 返回操作结果
 */
export function registerActivity(activityId) {
    return request({
        url: `/registration/register/${activityId}`, method: 'post'
    })
}

/**
 * 收藏/取消收藏活动
 * @param {number} activityId - 活动ID
 * @param {number} type - 操作类型：1-收藏，0-取消收藏
 * @returns {Promise} 返回操作结果
 * @deprecated 请使用collection.js中的addCollection和cancelCollection方法
 */
export function toggleCollectActivity(activityId, type) {
    // 导入collection.js中的方法
    const { addCollection, cancelCollection } = require('./collection');

    // 根据type选择对应的方法
    if (type === 1) {
        return addCollection(activityId);
    } else {
        return cancelCollection(activityId);
    }
}
